Conventional single-port memory generally includes a single set of addresses and a single control. Therefore, it can only be accessed by one device at a time—a single read operation or a single write operation can be performed, but both types of operation cannot be performed at the same time.
When it is desirable provide simultaneous read and write access to a memory, a two-port or multi-port memory may be used. For example, a read access can be made via one port of the memory while a write access is made via the other port. Conventional two-port or multi-port memories, however, generally include more transistors than single-port memories and thus take up more space on a chip than single-port memories. When same-location access is not required (or when it can be prohibited), separate memories can be used; however, there is also an area penalty associated with the use of separate memories since many of the peripheral circuits for one of the memories are duplicated for the other memory. The need for simultaneous read and write access must thus be balanced against the space penalty incurred, and dual- or multi-port memories are generally only selected when the need for simultaneous access outweighs the area and leakage penalties associated therewith. It would therefore be desirable to provide a memory having simultaneous read and write capabilities that improves upon conventional dual- or multi-port memories.